package annotation;

import core.SingletonFactory;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 用于表明类是单例的，以便{@link SingletonFactory}知晓，必须有且只有一个{@link DependencyInjection}构造器
 *
 * <p>使用单例模式的理由是：一个类不存储状态，因此每次实例化产生的对象都是一致的，不会因为程序执行过程不同而改变。若每次用到该类时都实例化一个新的对象，会浪费资源。因此全局用同一个对象，以节约资源。
 *
 * @see SingletonFactory
 * @see DependencyInjection
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Singleton {

}
